package lambda;

public class LambdaDemo1 {
    public static void main(String[] args) {
        // 目标：认识lambda表达式：搞清楚其基本作用
        Animal a = new Animal() {
            @Override
            public void eat() {
                System.out.println("吃猫粮");
            }
        };
        a.eat();

//错误示例：lambda并不是可以简化所有匿名内部类，只能简化函数式接口的匿名内部类
//        Animal a2 = () -> {
//            System.out.println("吃猫粮")
//        };

        System.out.println("================");

        // lambda只能简化函数式接口的匿名内部类
        MyInterface mi = () -> {
            System.out.println("吃猫粮");
        };
        mi.show();
    }
}


abstract class Animal{
    abstract void eat();
}

// 函数式接口: 只有一个抽象方法的接口
@FunctionalInterface//声明为函数式接口的注解
interface MyInterface{
    void show();
}